/*=====================================================================================================================
 * 
 * Repository path:     $HeadURL: http://pfsmps.googlecode.com/svn/trunk/src/traps.h $
 * Last committed:      $Revision: 2 $
 * Last changed by:     $Author: vladislav.gyurov@gmail.com $
 * Last changed date:   $Date: 2013-09-16 20:26:36 +0000 (Mon, 16 Sep 2013) $
 * ID:                  $Id: traps.h 2 2013-09-16 20:26:36Z vladislav.gyurov@gmail.com $
 *
 *===================================================================================================================*/
#ifndef __TRAPS_H
#define __TRAPS_H

/*
** Module Identification
*/
#define __TRAPS

/*=====================================================================================================================
 * Included files to resolve specific definitions in this file                
 *===================================================================================================================*/
#include "basedef.h"

/*=====================================================================================================================
 * Constant data                                                              
 *===================================================================================================================*/

/*=====================================================================================================================
 * Exported type                                                             
 *===================================================================================================================*/

/*=====================================================================================================================
 * Exported data                                                              
 *===================================================================================================================*/

/*=====================================================================================================================
 * Constant exported data                                                     
 *===================================================================================================================*/

/*=====================================================================================================================
 * Exported Macros                                                            
 *===================================================================================================================*/
#ifdef __DEBUG
    #define _assert(Cond)if(!(Cond)) {_dbgassert()}
#else
    #define _assert(Cond)  {}
#endif

#if defined(HALT_TO_DEBUGGER)
    #define _dbgassert()    {__asm__ volatile (".pword 0xDA4000");__asm__ volatile (".pword 0xDA4000");}
#else
    #define _dbgassert()    {AssertExternal(__LINE__, __FILE__);}
#endif
/*=====================================================================================================================
 * Exported functions                     				                        
 *===================================================================================================================*/
extern void __attribute__((noreturn)) AssertExternal(U16 u16Line, const char *File);

#endif /* __TRAPS_H */
